package com.example.springdesignpattern.strategy;

import com.example.springdesignpattern.strategy.service.MsgHandleService;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 策略模式类型容器
 * 案例背景详情请见：https://blog.csdn.net/zzti_erlie/article/details/102988486
 *
 * 策略模式作用：将多个if else 转换成for循环处理 或者 Map按类型获取以简化代码复杂度
 *  策略模式：将所有消息处理策略放入策略容器中，按照消息类型获取消息处理的策略
 *     在创建不同消息的时候，就可以使用不同的消息处理器进行处理。
 *
 */


@Component
public class MsgServiceContext {
    private   final Map<Integer, MsgHandleService> msgHandleServiceMap=new HashMap<>();

    public MsgHandleService getMsgHandleService(Integer code) {
        return msgHandleServiceMap.get(code);
    }

    public void putMsgHandleService(Integer code,MsgHandleService msgHandleService){
        msgHandleServiceMap.put(code,msgHandleService);
    }
}
